package com.kgc.service.edu.service.impl;



import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.kgc.service.base.exception.HpitException;
import com.kgc.service.edu.entity.LoginUser;
import com.kgc.service.edu.entity.SieUser;
import com.kgc.service.edu.entity.SieUserDescription;
import com.kgc.service.edu.entity.vo.SieInfo;
import com.kgc.service.edu.mapper.LoginUserMapper;
import com.kgc.service.edu.mapper.SieUserDescriptionMapper;
import com.kgc.service.edu.mapper.SieUserMapper;
import com.kgc.service.edu.service.SieUserService;

import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author yg
 * @since 2021-07-26
 */
@Service
public class SieUserServiceImpl  extends ServiceImpl<SieUserMapper, SieUser> implements SieUserService {


    private SieUserMapper sieUserMapper;
    private SieUserDescriptionMapper sieUserDescriptionMapper;
    private LoginUserMapper loginUserMapper;
    public SieUserServiceImpl(SieUserMapper sieUserMapper, SieUserDescriptionMapper sieUserDescriptionMapper, LoginUserMapper loginUserMapper) {
        this.sieUserMapper = sieUserMapper;
        this.sieUserDescriptionMapper = sieUserDescriptionMapper;
        this.loginUserMapper = loginUserMapper;
    }


    @Override
    public PageInfo<SieUser> selectSieUser(SieUser sieUser,Integer current,Integer size) {
        PageHelper.startPage(current,size);
        List<SieUser> sieUsers = sieUserMapper.selectSieUser(sieUser);
        PageInfo<SieUser> pageInfo=new PageInfo<SieUser>(sieUsers);
        return pageInfo;
    }



    @Override
    @Transactional(rollbackFor = Exception.class) // spring事务注解 只要有异常就回滚
    public String saveSieInfo(SieInfo sieInfo) {
        String id="";
        SieUser sieUser=new SieUser();
        LoginUser loginUser=new LoginUser();
        BeanUtils.copyProperties(sieInfo,sieUser);
        BeanUtils.copyProperties(sieInfo,loginUser);
        int i = loginUserMapper.saveUser(loginUser);
        int s = sieUserMapper.saveSieUser(sieUser);
        LoginUser loginUser1 = loginUserMapper.selectLogin(loginUser);
        if (loginUser.getAuser()==loginUser1.getAuser()){
            throw new HpitException("该用户已存在",20001);
        }
        else if (i!=1&&s!=1){
            throw new HpitException("保存失败",20001);
        }
        id=sieUser.getId();
        SieUserDescription sieUserDescription = new SieUserDescription();
        sieUserDescription.setDescription(sieInfo.getDescription());
        sieUserDescription.setId(id);
        int i1 = sieUserDescriptionMapper.saveDes(sieUserDescription);

        if (i1!=1){
            System.out.println(sieInfo);
            throw new HpitException("保存失败",20001);
        }
        return id;

    }

    @Override
    public int deleteSieById(List<String> list) {

        System.out.println(list);
        SieUser sieUser=new SieUser();

            //删除简介
            sieUserDescriptionMapper.deleteById(list);
            //删除登录用户
        int i = loginUserMapper.deleteById(list);
        //删除用户
           sieUserMapper.deleteByIds(list);


        return i;
    }

    @Override
    public void updateSieInfoFormById(SieInfo sieInfo) {
        SieUser sieUser=new SieUser();
        LoginUser loginUser=new LoginUser();
        BeanUtils.copyProperties(sieInfo,sieUser);
        BeanUtils.copyProperties(sieInfo,loginUser);
        int i = loginUserMapper.updateUser(loginUser);
        int s = sieUserMapper.updateSieUser(sieUser);
        if (i!=1&&s!=1){
            throw new HpitException("修改失败",20001);
        }
        SieUserDescription sieUserDescription = new SieUserDescription();
        BeanUtils.copyProperties(sieInfo,sieUserDescription);
        int k = sieUserDescriptionMapper.updateDescription(sieUserDescription);
        if (k!=1){
            throw new HpitException("修改失败",20001);
        }
    }

    @Override
    public SieInfo getSieInfoById(String id) {
        SieInfo sieInfo=new SieInfo();
        SieUser sieUser = sieUserMapper.selectSieUserByid(id);
        BeanUtils.copyProperties(sieUser,sieInfo);
        LoginUser loginUser = loginUserMapper.selectUserByid(id);
        sieInfo.setUserpassword(loginUser.getUserpassword());
        SieUserDescription sieUserDescription = sieUserDescriptionMapper.selectUserDescriptionByid(id);
        sieInfo.setDescription(sieUserDescription.getDescription());
        return sieInfo;
    }

}
